草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - C/C++ 中可中断的命名范围

介绍这个问题来自这个问题:Thenamedloopidiom:dangerous?.对于不想阅读原始问题的人来说,这是关于做这样的事情:named(label1)for(inti=0;i这个新问题是关于“命名循环”习语的改进版本。如果你懒得阅读整篇文章,你可以直接进入这篇文章的“示例”部分,清楚地理解我在说什么。设计缺陷不幸的是,这个问题很快就结束了(后来又重新打开了),因为它更像是一个利弊辩论,而不是一个纯粹的技术问题。似乎它不适合SOQ&A格式。此外,我提供的代码有几个缺陷:关键词break由宏重新定义宏是用小写字母写的它使一些可怕的东西可以编译(至少使用MSVC):intfoo(

c++ - C/C++ 的 MC/DC 覆盖工具

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion最近上了CS258的免费在线类(class),里面提到了一个代码覆盖率,叫做MC/DC覆盖率,用在嵌入式软件中,比如汽车、飞机上的电脑等...但是我找不到一个免费工具来显示我的程序的MC/DC覆盖范围,有什么建议吗?

c++ - 如何在 C/C++ 中将字符串从 UTF8 转换为 Latin1?

我的问题很简单,但我至今找不到解决方案:如何在C++中将UTF8编码的string转换为latin1编码的string而无需使用任何额外的库(如libiconv)?到目前为止我能找到的每个示例都是针对latin1到UTF8的转换? 最佳答案 typedefunsignedvalue_type;templatesize_tget_length(Iteratorp){unsignedcharc=static_cast(*p);if(cvalue_typeget_value(Iteratorp){size_tlen=get_length(

c++ - 在 C/C++ 中将非常大的 int(写为字符串)转换为二进制字符串

我有一个基数为10的数字,大约有10k位。我想将它转换成基数2(1010101001...)。我能想到的就是原始算法:取最后一位mod2->记下位数字除以2;在字符串上实现小学分部应该不难,但我认为它非常低效。如果我是对的,它将是O(l^2),其中l表示以10为基数的数字长度。可以更快地完成吗? 最佳答案 据我了解,您的大数字表示为十进制数字序列。如果是这样,您可以使用乘法和加法计算“二进制”表示:value=sum(iin0...n-1)10i*digiti此计算可以分而治之的方式拆分成多个部分,但我不确定您是否可以得出O(nlo

c++ - 针对推送优化的线程安全 C/C++ 队列

我正在寻找针对推送操作优化的线程安全C/C++队列实现。我不介意pop操作是否阻塞,但我希望永远不会在推送端阻塞。让我解释一下为什么。我正计划为C#应用程序编写分析器,我将有多个线程将消息推送到单个调度程序线程。我不介意调度程序是否很快阻塞,但我想避免在推送端出现任何延迟。 最佳答案 您可以使用boost.lockfree.它在boostsandboxsvn中,计划与boost版本1.53或1.54一起发布,具体取决于boost.atomic是否及时发布。目前boost.lockfree依赖于std::atomic而不是boost.

c# - 将 C char[][] 数组编码到 C#

我看了又看,尝试了所有我能想到的或发现的建议。我仍然没有运气获得我需要的数据。我正在使用第三方DLL,我认为它是用C语言编写的。我需要在C#中访问此DLL中的函数。在大多数情况下,我有这个工作,除了一个功能。我遇到问题的函数具有以下header:uintqueryNumOfServers(USHORT*NumOfServers,charServerNames[8][16]);我在我的C#应用程序中声明了以下内容[DllImport("client.dll",CharSet=CharSet.Ansi]publicstaticexternuintqueryNumOfServers(refs

c++ - 如何使用 QtCreator 调试 DLL 项目?

我已经使用QtCreatorIDE编写了一个用mingw编译的非QtCDLL。当我将DLL注入(inject)进程时,DLL导致该进程在特定代码行崩溃。通过使用OutputDebugString,我发现这一行是罪魁祸首。我知道如何修复该行,并且当该行被修改时DLL可以工作。但是,为了学习如何使用调试器,我保留了未修改的断行。我如何使用QtCreator调试器找到导致问题的同一行?当QtCreator设置为Debug模式编译时,按F5会出现如下对话框,因为没有EXE: 最佳答案 解决方案是在注入(inject)DLL之前运行附加到可执

c++ - gcc 是否有 pragma 来定义文件类型/编译器?

GCC根据文件扩展名(.c、.cc)、命令行参数(-x)或直接调用适当的编译器(比如g++而不是gcc)自动在编译器之间切换。有什么方法可以在文件中使用pragma来覆盖这些吗?评论后更新:我正在将当前50/50C和C++的代码库转换为完全使用C++编译器编译。这是为了允许当前的“C”模块调用我无法更改(并且不想包装)的新C++基础。对于真正是C的文件,我想将扩展名保留为.c,即使它们现在具有C++链接。我认为将它们保留为“.c”表明它们为何如此(我在这里考虑后代!;-))但是更改构建系统以适应每个更改的C文件名也是一项艰巨的工作。更糟糕的是,C文件的一小部分不会正常地转换为C++,所

c++ - 扭曲如何与原子操作一起工作?

warp中的线程在物理上并行运行,所以如果其中一个(称为线程X)启动原子操作,其他线程会做什么?等待?这是否意味着,当线程X被推送到原子队列时,所有线程都将等待,获取访问权限(互斥锁)并使用内存做一些事情,内存受到该互斥锁的保护,然后才是真正的互斥锁?有没有办法让其他线程进行某些工作,比如读取一些内存,这样原子操作会隐藏它的延迟?我的意思是,有15个空闲线程......我猜不太好。Atomic真的很慢,是吗?我怎样才能加速它?有什么模式可以使用它吗?共享内存的原子操作是否锁定银行或整个内存?例如(没有互斥量),有__shared__floatsmem[256];线程1运行atomicA

c++ - 为什么两次比较 char 变量比一次比较 short 变量更快

我认为一次比较一定比两次比较快。但是经过我的测试,我发现在debug模式下shortcompare要快一点,而在release模式下charcompare要快一些。我想知道真正的原因。以下是测试代码和测试结果。我写了两个简单的函数,func1()使用两个字符比较,func2()使用一个短比较。主函数返回临时返回值以避免编译优化忽略我的测试代码。我的编译器是GCC4.7.2,CPUIntel®Xeon®CPUE5-24300@2.20GHz(VM)。inlineintfunc1(unsignedcharword[2]){if(word[0]==0xff&&word[1]==0xff)re